secure remote password protocol (SRP)

Posté le mercredi 31 janvier 2007 à 5 h 54, Read it in english with Google

SRP est un protocole en fin de developpement distribué par Stanford permettant une méthode d’authentification login/password sécurisée sans utiliser le système RSA de clef public et leurs certificats.

Je ne vous parle pas de la sécurité des mots de passes betement hashés avant les transmissions, tout ce qui passe par le réseau peut etre écouté et donc reproduit.

Pourquoi ? parce que toutes les méthodes basées sur les certificats d’authenticités sont très couteuses ou pas sécurisé si le certificat n’a pas été émis par une société tiers. C’est le cas de la plupart des serveurs SSH qui utilisent un certificat fait maison : la première fois que vous le recevez, comment pouvez vous etre sur à 100% que ce certificat provient bien du serveur auquel vous tenté de vous connectez ? Dans le cas des certificat authentifier, une signature en inclue à l’intérieur se qui permet de vérifier l’authenticité à l’aide d’un autre certificat (d’authenticité celui-ci) pré-enregistré dans la pluspart des machines.

le Secure Remote Password Protocol propose donc une alternative gratuite en se qui concerne les authentifications. Je dirais que c’est une variante de l’algorythme de Diffie-Hellman avec un hashage du couple login/password avant. Je ne vais pas vous écrire la démarche ici, vous comprendrez mieux avec l’exemple.

Mais si vous connaissez un peu Diffie-Hellman vous serez qui n’est pas possible de tout faire en une seul requete, donc ne comptez pas la dessus pour l’intégré dans un seul formulaire html, il faudra deux pages au moins pour aboutir au résultat sans une XMLHttpRequest.

Qu’elles avantages par rapport à ceux éxistant ? Et bien tout d’habord, vous en connaissez beaucoup des protocoles d’authentifications sécurisé hormis ceux basé sur les certificats ? moi pas. Je connais bien la méthode utilisé par SPIP :

H() function de hashage.
pa = password entré par Alice
pb = password que Bob connait déjà
u = login
Alice veut s'authentifier sur bob,
Alice envoie u
bob renvoie {
k1 = nombre/chaine précédente associée au profil d'alice
}
alice renvoie {
h1 = H(pa,k1)
h2 = H(pa,k2)
k2 = nombre/chaine aléatoire
u
}
Bob va recherché k1 à l'aide de u et vérifie que h1 = H(pb,k1)
si vrai :
pb = h2
k1 = k2
k1 et pb sont stocké dans la base de donnée et l'authentification réussie, bob va renvoyé un identifiant de session.

mais cette méthode nécéssite de stocker un champ supplémentaire dans la DB et génèrent également une activité de celle-ci du au fait que le grain de sable (K1) doit etre stocké dans la base de donnée.
Le SRP lit uniquement les données.

C’est donc un protocole qui, bien qu’un peu compliqué, mérite d’etre remarqué et implémenté.

wikipedia || interview de Tom Wu créateur du SRP protocol

5 réponses à “secure remote password protocol (SRP)”

  1. thier

    c’est trés interessant j’aurais aimé avoir son utilisation avec sfs

  2. Clipperz, Gestionnaire de mot de passe en ligne contient sur le sujet :

    […] base de données. La clef de codage est votre propre mot de passe. La fonction de hashage pour le protocol SRP est SHA-2, une extension que de SHA-256 : H = SHA-256 (SHA-256 (m)). L’encryptage utilisé […]

    le vendredi 5 octobre 2007 @ 20 h 50
  3. Cryptage des mots de passe | unanoia contient sur le sujet :

    […] http://www.xorax.info/blog/news/111-secure-remote-password-protocol-srp.html […]

    le mercredi 10 novembre 2010 @ 19 h 12
  4. Cryptage des mots de passe. | Systèmes Embarqués contient sur le sujet :

    […] http://www.xorax.info/blog/news/111-secure-remote-password-protocol-srp.html […]

    le vendredi 12 novembre 2010 @ 12 h 57
  5. Lertsenem

    Une erreur dans la description du protocole : Bob ne va pas vérifier que h1 == H(pb, k1), puisque cela signifierai que pa == pb. Or pb est déjà un hash (et c’est normal, on ne doit pas stocker de mots de passes en clair côté serveur). Bob vérifie donc simplement h1 == pb.

Les commentaires sont fermés.